package com.tucao.gateway.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.UUID;

/**
 * @Author linshouqiang
 * @Description JWT工具类
 * @Date 2020/11/25 10:25
 * @Version 1.0
 */
@Slf4j
@Component
public class JWTUtils {

    private static final String SECRET = "#@#@#@#ls%^%^q4568lov*&^eht*&%^$t";

    /**
    * 验证token的合法性
    * 若不报异常，说明验证通过
    * 可能发生的异常类型：
    * 1、SignatureVerificationException   签名不一致异常
    * 2、TokenExpiredException            令牌过期异常
    * 3、AlgorithmMismatchException       算法不匹配异常
    * 4、InvalidClaimException            失效的payload异常
    */
    public static void verify(String token){
        JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);
    }

    /**
    * 获取token信息方法
    */
    public static DecodedJWT getTokenInfo(String token){
        DecodedJWT verify = JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);
        return verify;
    }

}
